home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-01 / cuj1008.zip / RAMEY.ZIP / PSORT.C < prev    next >
C/C++ Source or Header  |  1991-10-14  |  2KB  |  69 lines

  1. char *cmsg = "Postman's Sort (R) Version 1.0\n\
  2. Copyright (c) Robert Ramey 1991. All Rights Reserved\n";
  3.  
  4. #include <stdio.h>
  5. #include "psort.h"
  6. /*********************************************************************
  7. main program - entry point
  8. **********************************************************************/
  9. main(argc, argv)
  10. int argc;
  11. char *argv[];
  12. {
  13.     fputs(cmsg, stderr);
  14.  
  15.     /* analize command line */
  16.     psort_init(argc, argv);
  17.     chkcmd(argc, argv);
  18.     sort();
  19.     exit(0);
  20. }
  21.  
  22. char *umsg =
  23. "sort [-t <working dir>] [-s <record size>] [<sort field>...]\n\
  24. sort field := [<sort key>] [-f <field range>]... [-c <character range>]...\n\
  25. sort key := -k <collating sequence> [-i] [-n]\n\
  26. range := <start>[-<end>]\n\
  27. collating sequence := <range> ...\n\
  28. \t|-r <collating sequence>\n";
  29.  
  30. /*********************************************************************
  31. chkcmd - check that there are no un recognized command line switches
  32. **********************************************************************/
  33. chkcmd(argc, argv)
  34. int argc;
  35. char *argv[];
  36. {
  37.     int i, j, k;
  38.  
  39.     j = 0;
  40.     for(i = 1;i < argc;++i)
  41.         if(argv[i][0] != NULL)
  42.             ++j;
  43.     if(j == 0)
  44.         return;
  45.     i = 0;
  46.     k = j;
  47.     while(j > 0){
  48.         do{
  49.             ++i;
  50.         }while(argv[i][0] == NULL);
  51.         --j;
  52.         switch(j){
  53.         default:
  54.             fprintf(stderr, "%s, ", argv[i]);
  55.             break;
  56.         case 1:
  57.             fprintf(stderr, "%s and ", argv[i]);
  58.             break;
  59.         case 0:
  60.             if(k > 1)
  61.                 fprintf(stderr, "%s are invalid arguments\n\n", argv[i]);
  62.             else
  63.                 fprintf(stderr, "%s is an invalid argument\n\n", argv[i]);
  64.             break;
  65.         }
  66.     }
  67.     error(umsg);
  68. }
  69.